<!DOCTYPE html>
<title>SXG reporting test of sxg.failed for navigation (zero success fraction)</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/network-error-logging/support/nel.sub.js"></script>
<script src="../resources/sxg-util.js"></script>
<body>
<script>
const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
const test_origin = get_host_info().HTTPS_ORIGIN;

nel_iframe_test(async t => {
  await loadResourceWithZeroSuccessFractionPolicyInIframe();
  const sxg_url =
      alt_origin + '/signed-exchange/resources/sxg/sxg-cert-not-found.sxg?navigation';
  const cert_url = test_origin + '/signed-exchange/resources/not_found_certfile.cbor';
  const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
  assert_equals(message.location,
                innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
  assert_true(message.is_fallback);
  assert_true(await reportExists(
    {
      url: sxg_url,
      user_agent: navigator.userAgent,
      type: "network-error",
      body: {
        phase: "sxg",
        // The origin of this SXG's certURL is different from the reporting
        // origin. So the report must be downgraded.
        type: "sxg.failed",
        elapsed_time: 0,
        status_code: 200,
        referrer: location.origin + '/',
        sxg: {
          outer_url: sxg_url,
          inner_url:
              innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
          cert_url: cert_url
        }
      },
      metadata: {
        content_type: "application/reports+json",
      },
    }
  ), 'SXG error reporting must be downgraded when the cert URL is different ' +
     'from the reporting origin');
  assert_false(await reportExists(
    {
      url: sxg_url,
      user_agent: navigator.userAgent,
      type: "network-error",
      body: {
        phase: "application",
        type: "ok",
        status_code: 200,
        referrer: location.origin + '/',
      },
      metadata: {
        content_type: "application/reports+json",
      },
    }
  ), 'Succeeded normal NEL report should not be sent when success fraction ' +
     'is zero.');
}, 'SXG error report must be downgraded when the cert URL is different from ' +
   'the reporting origin. And succeeded normal NEL report should not be sent ' +
   ' when success fraction is zero.');
</script>
</body>
